iT邦幫忙

2021 iThome 鐵人賽

DAY 15
0
自我挑戰組

HomeLab 30天,胡搞瞎搞亂弄一通。系列 第 15

Day15,設定一下Ingress

  • 分享至 

  • xImage
  •  

正文

在很多的情境下,我們會使用到前天所提及的Service Type Loadbalancer,而也因為IP拮据的問題、或是cost問題等等......我們需要額外搭建所謂的reverse proxy,使用相同的對外IP代理不同的服務,在這樣的需求下,我們往往會調整在reverse proxy的規則當中。

而Ingress controller 則是在Kubernetes中被提出的一種solution,以api yaml的方式撰寫規則,背後透過controller進行轉譯,從而達到想要的reverse proxy效果。

目前檯面上的Ingress class 也有許多種選擇如nginx、haproxy、traefik、kong等等......
我這邊選擇的是我常用ingress-nginx,選擇的考量其實也很單純,在還未導入Kubernetes前,nginx & kong 算是一直以來就比較常接觸的工具,其中Kong的定義為Api Gateway,雖說與nginx也頗有淵源,也能夠達到類似效果,但與nginx不同的是更著重在API控管這一塊,如身份驗證、流量控制,等等眾多plugin......

kong是基於OpenResty延伸,而OpenResty則是基於nginx+LuaJIT
順代一提ingress-nginx controller也是基於OpenResty/lua,如果我沒記錯的話

而這裡我的需求要的只是個支援mutidomain的reverse proxy,在這裡ingress-nginx更貼切我的需求

那今天要來安裝Ingress-nginx的controller(ingress-nginx的github連結)

我們這邊要使用helm佈署,所以要先執行下列的動作

helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginx
helm repo update

## 查看可裝版本
helm search repo ingress -l

比對官網的readme support version,本次lab的kubernetes為1.20,所以最新版本應該都能裝。

使用helm指令操作產出設定檔

## 產出ingress-nginx 使用helm佈署時的參數調整檔
helm show values ingress-nginx/ingress-nginx --version 4.0.1 > values.yml

修改value.yaml,將昨日設定的openELB設定帶入,使地端的LoadBalancer得以運作

  service:
    enabled: true

    annotations:
      lb.kubesphere.io/v1alpha1: porter
      protocol.porter.kubesphere.io/v1alpha1: layer2
      eip.porter.kubesphere.io/v1alpha2: porter-layer2-eip

使用helm指定版本與設定檔案進行佈署

helm install  ithome-ingress ingress-nginx/ingress-nginx --version 4.0.1 -f values.yaml  -n ithomelab 

佈署完成的結果展示

接著必須要設定並佈署ingress.yaml,設定完成後會根據設定的規則被ingress-controller轉譯成對應的nginx設定檔。

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  annotations:
    kubernetes.io/ingress.class: "nginx"
  name: ithomelab-ing
  namespace: ithomelab
spec:
  rules:
    - host: www.gurubear.cf
      http:
        paths:
          - backend:
              service:
                name: ithomelab-react-deployment
                port:
                 number: 80
            path: /
            pathType: Prefix
          - backend:
              service:
                name: ithomelab-api-deployment
                port:
                 number: 80
            path: /API
            pathType: Prefix

檢查ingress 是否確實綁到IP

因為尚未設定domain與IP Forward,佈署完成後先在本機 /etc/hosts 設定偽造的A Record

192.168.1.240 www.gurubear.cf

打開瀏覽器檢查,左邊為輸入domain的情況,右邊為ip直連

進去container可以看到/etc/nginx中被轉譯的nginx.conf檔案

那到這邊服務都沒問題,明天就來設定真正的domain與憑證的事情了。

閒聊

其實如果很擅長寫Reverse Proxy Rules的話Ingress好像也不是那麼必要XD。


上一篇
Day14,來試試OpenELB
下一篇
Day16,Domain&自簽憑證
系列文
HomeLab 30天,胡搞瞎搞亂弄一通。30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言